Arch Linux Signature Keyring
介绍
当执行 pacman -Syu 的时候,有时会收到 unknown trust signature 错误。当包的维护者变更、依赖改变、加入新依赖的时候,有可能会导致这个报错。这个错误并不总是意味着有人接管了软件包并提交了一个不安全的软件包。
在本文中,将介绍如何修复 error: signature from <author> is unknown trust 错误。
为什么包会有未知信任的签名?
上面的报错与 pacman-key gpg 数据库有关。这个数据库包含所有必要的PGP公钥。现在,你可能会问自己,谁的公钥是必要的?有两个小组在官方的 Arch 仓库里维护软件包。他们分别是:
- 官方开发者
- 信任用户(Trusted Users (TU))
由他们维护的软件包总是由这些用户的主密钥签名。
但这些组中的用户会发生变化。例如,一个新的用户被接纳到受信任用户组。该用户的公钥现在必须被添加到 archlinux-keyring 包中。它也必须在 pacman-key gpg 数据库中被标记为可信的。
但这不会自动发生。因此,当该用户签署软件包时,你会得到一个错误,即该签名是未知的信任,因为该钥匙还没有被添加到数据库中/被信任。
如何信任一个签名?
至少有四个选择,还有一个选择是等待 archlinux-keyring 软件包的更新。
如果你想自己动手,我建议你选择第一个方案。
方法一:通过 pacman-key 刷新信任 keys
Pacman 包括一个对 GnuPG 的方便包装脚本。这个脚本被称为 pacman-key。
你可以用它轻松地管理你的可信 PGP 密钥的钥匙链。你还可以用它来刷新你的本地密钥数据库。
要做到这一点,请以root身份运行以下程序:
pacman-key --refresh-keys
一旦这样做了,你就可以检查你所需要的钥匙现在是否被包括在内。以root身份运行这个程序:
pacman-key --list-keys <signature>
对我来说,我缺 Alexander Epaneshnikov, 的公钥,所以我将检查他的签名:
pacman-key --list-keys 6C7F7F22E0152A6FD5728592DAD6F3056C897266
pub rsa4096 2020-03-04 [SC] [expires: 2023-01-20]
6C7F7F22E0152A6FD5728592DAD6F3056C897266
uid [ unknown] Alexander Epaneshnikov <email@alex19ep.me>
uid [ full ] Alexander Epaneshnikov <alex19ep@archlinux.org>
uid [ unknown] Alexander Epaneshnikov <aarnaarn2@gmail.com>
sub rsa4096 2020-03-04 [A] [expires: 2023-01-20]
sub rsa4096 2020-03-04 [E] [expires: 2023-01-20]
sub rsa4096 2020-03-04 [S] [expires: 2023-01-20]
方法二:重装 archlinux-keyring
如果你不想折腾包装脚本,你也可以重新安装 archlinux-keyring 软件包。
安装后的脚本将更新本地 pacman gpg 数据库。这可以通过以root身份运行以下程序来完成:
pacman -S archlinux-keyring
因此,你的钥匙数据库将被更新,新的钥匙应该被包括在内并被信任!
方法三:前面的都失效,DIY
你也可以自己将所需的钥匙导入你的 pacman 钥匙链。尤其是当官方不提供这个密钥时,这是必要的。要做到这一点,请按照下面的步骤进行。
- 使用 pacman-key --recv-keys <signature> 导入密钥。如果你不知道签名,搜索 <author> pgp 一般能找到
- 验证指纹,避免导入不好的密钥:pacman-key --finger <signature>
- 使用你的私钥本地签名,这样能够导入并信任:pacman-key --lsign-key <signature>
该钥匙现在包括在你的pacman数据库的可信钥匙中。